    
function [LapA] = DHRLS(W1, W2, y, beta, lambda1, lambda2, knn, iterMax)
        [num_1, num_2] = size(y); 
        L_D_11 = construct_Hypergraphs_knn_weight_0(W1, knn); 
        L_D_22 = construct_Hypergraphs_knn_weight_0(W2, knn);
        fprintf('Dual Hypergraph regularized least square model\n'); 
        LapA = []; 
        Ta_d = randn(num_1, num_2); 
        Ta_t = randn(num_2, num_1); 
        for ii = 1:iterMax
            Ta_d = pinv(W1 * W1 + beta * eye(num_1) + lambda1 * W1 * L_D_11 * W1) * (2 * W1 * y - W1 * Ta_t' * W2); 
            Ta_t = pinv(W2 * W2 + beta * eye(num_2) + lambda2 * W2 * L_D_22 * W2) * (2 * W2 * y' - W2 * Ta_d' * W1); 
        end
    
        LapA = (W1 * Ta_d + (W2 * Ta_t)') / 2; 
    end